import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: wulangaaa
 * Date: 2025-04-17
 * Time: 18:19
 */
public class UnionFindSet {

        int[] elem;
    public UnionFindSet(int n) {
        this.elem =new int[n];
        Arrays.fill(elem,-1);
    }
/*
找根节点

 */
    public int findRoot(int x){
        if (x<0){
            throw new IndexOutOfBoundsException();
        }
        while (elem[x]>=0){
            x=elem[x];
        }
        return x;
    }
    /*
    判断两数是否是同一集合下的数
     */
    public boolean isSameUnion(int x,int y){
        int index1=findRoot(x);
        int index2=findRoot(y);
        if (index1==index2){
            return true;
        }
        return false;
    }


    /*
    两个不同集合中的数，形成关系后，将两集合合并成一个集合
注意：同意集合的两数不能合并
     */
 public void  union(int x,int y) {
     int index1 = findRoot(x);
     int index2= findRoot(y);
     if (index1==index2){
         return;
     }//在同一个集合中
     elem [index1]=elem[index1]+elem[index2];
     elem[index2]=index1;
      }

      /*
      获取集合个数

       */
public int getCount(){
    //一个集合的根节点，对应到数组值就是负数，那么数组中有几个负数
    //就有几个集合
    int count=0;
    for (int x:elem) {
        if (x<0){
            count++;
        }
    }
     return count;
}

    public static void main(String[] args) {
    List<Integer> list=Arrays.asList(1,2,3);
        System.out.println(list);
    }

}
